DAVID MALAN: So my name is David Malan and I
do teach this course called CS50 at Harvard,
which is our introductory course in computer science for majors
and non-majors.
All of the slides and photos and visuals that I'm about to show
will be at this URL right here.
If you'd like to play along at home cs50.ly/illinois21.
So in the call for participation for the workshop
there is this wonderful list of directions that each of us could go in
and I feel like I could touch on most any of these,
but I thought I should try to focus on just one of them,
ultimately, and let me propose that, ultimately, my case here
be for advocating for new approaches in a way that I'll soon define.
And I should note too, a disclaimer of sorts.
So not only was everyone in our orbit here in Cambridge fortunate enough
to stay healthy this past year, this was also, for us,
sort of the evolution of some 15 years worth of experimentation and teaching
online.
So what you're about to see is not the result
of our having woken up some year plus ago and decided
we'll do things this way.
But really was an evolution of the things we've been trying out,
some successes and failures along the way.
And so ultimately, even though what you're about to see
does involve quite a few people, quite a few resources,
ultimately, the germ of the idea that I'd ultimately
like to leave us all with is just rethinking
what it is we do with our more traditional on-campus courses.
And as we infuse them with these online aspects, not
to think of it as being an either or between on-campus or online,
but really to design these online courses in a way
that they're fully woven into the fabric of our on-campus courses.
So that very on-campus course here is called CS50.
It is indeed freely available as OpenCourseWare,
if you'd like to take a look at the curriculum at any point there,
and it is also one of these MOOCs, or massive open online courses
on edX as well.
So back in the day this is what things used to look like in 2019 and prior,
when we would all convene for the course's lectures.
Here in Cambridge, we would have some 800 students on campus
through Harvard College as well as a couple
of more through Harvard Extension School and other variations of the class.
And beyond just gathering more traditionally
for the academics of lecture have we have long
had a tradition of more community oriented events.
These are our office hours and a big library on campus.
This is a photo from one of our hackathons,
sort of a capstone toward the end of the course where students
spend quite a bit of time in close proximity to each other
as well working on final projects.
And then a so-called CS50 fair at semester's end,
which is a presentation of all students' final projects.
So among the first questions we had this past year
when deciding how to go into Fall 2020 was which, if any of these,
traditions we could preserve.
And right off the bat it looked like none of them, really.
And so, really, our interactions with students
were going to be limited, of course, to Zoom in some form.
And so we began to focus as heavily as we
could really on trying to bring the course as much to life
as we could even in that strictly online format.
Even for our otherwise on campus students.
Now for many years we had indeed had this tradition
of having the fortune of being able to film the class, even prior
to COVID, and with nice 4K resolution, widescreen
cinematography in a beautiful space like this here, one of the theaters
on campus.
And so frankly one of our first considerations
early on was: well, maybe we should just rerun
the previous version of the course.
2019's version was very highly produced, it
seemed to go quite well curricular and otherwise.
We could just reuse all of those same assets.
And in fact, this was something we had in sort of the back of our pocket,
just in case we weren't able to do justice to what it
was we had as a vision for Fall 2020.
As well.
Now, of course, this was also an image from a previous lecture in Fall 2019
and all of this had to go.
And as much as we've endeavored over the years to bring
lectures, in particular, to life once more or more per week
by involving students on stage and demonstrations, the creation
of these so-called memorable moments.
That too was something we feared that if we
redid the class live Fall 2020 online only in some form where we're
going to have to start sacrificing some of those very visuals, some
of those very memorable moments that we could reuse in some form in 2020.
So that too was on the forefront of our mind.
But kind of ridiculously, I think, the first fix or change
that occurred to multiple members of our team
here was that for like 5, 10 years have I
been using at the very start of CS50, which is ostensibly taught in C
and in Python primarily as an introduction to programming
for students, we also spend a week on Scratch, this graphical programming
language from MIT's Media Lab.
And for some reason or other, for years, I
had been introducing students to the notion of loops and iteration
by making a cat like this on the screen cough not once,
not twice, but three times iteratively just
to paint a picture of what loops are for.
So we got, sort of, multiple realizations off the bat
that this is the first thing that had to go.
Now in retrospect, I don't know why we weren't
using what we went with in Fall 2020, which
was just have the cat say meow instead of cough,
but that was at least among the earliest and easiest challenges to then tackle.
So at this point now back in March, April, May of 2020
did we start thinking about how we were going
to approach presenting this course to students
presumably, if they themselves were entirely online.
And we again have experimented over many years,
now, with different demographics of students both at the college,
through executive education, graduate schools here at Harvard.
So we had a number of different formats and evolutions over time.
So for instance, this year is a picture of what perhaps the most homegrown
solution might have been.
You can also use phone books if you have a stack of those as well.
But this is perhaps the sort of most makeshift approach that we took,
myself took when teaching Zoom in some form in the past.
Now we started experimenting shortly thereafter, though,
with something a little more conducive to a teacher moving around a little bit
and standing and feeling like they're in sort of a classroom.
And so we essentially, through experimentation and a bit of hardware
here and there, turned my kitchen, an artist's rendition of it
appears here, into essentially a mini video
Studio a big white backdrop from Amazon and back, a couple
of LED lights in the front and the back, and then
just my laptop at standing height on the kitchen counter on one of those
stand to sit desks that would allow me ultimately to stand.
And so indeed, this for me was sort of one of the primary goals,
was not to have to teach a whole course sitting.
As you can see, my sort of extremities sort of
start to exude energy on their own.
And so having a setup like this actually lent itself
to a bit more dynamism in the kinds of feel of the class
that we wanted to present to students.
Picture here is just a closer up of that same sort of setup.
So early on too, last summer, we started experimenting with software.
And of course, we're all here on Zoom and most of us
are familiar with sharing a screen on Zoom, which in the traditional way
looks a little something like this screenshot here, where one of us
is relegated to a pretty small tile, maybe in gallery mode
with a few other teachers or students.
And then the screen takes up most of the space, which makes sense for visuals
but very easily starts to decouple the presentation from the presenter.
And it starts to feel more like just a sort of old school slide show
as opposed to a live and living and breathing class.
And so we experimented with one tool with which some of you
might be familiar, OBS, which is an open source project which
allows you to create your own layouts in software on your own Mac or PC
and then present it to Zoom as a virtual camera.
So we started experimenting with formats like this.
So same code same slides, but a bigger version of me, which I don't think
was motivated by, fundamentally, a desire for just
me to be what students see primarily, but just
to try to keep them all the more visually engaged,
especially if the slides or the code are up there, the entirety of class.
It feels a little more closely like you're actually
continuing to have a one on one or one on few chat with each other.
So besides using a tool like OBS, we began to experiment, too,
with some topologies that we had used in here on campus.
So in fact Margaret Seltzer, one of yesterday's presenters,
and I used to co-teach a class together here
on campus, for which we started experimenting with a Zoom based set up
like this, pre COVID, for an executive Ed class at Harvard's Business School,
where we just had a big screen TV at the end of a table.
We even had a teleprompter, at one point, with a camera hidden behind it.
So that when Margo or I were sort of talking to or looking at the students,
it actually looked like we were looking right at them
with none of this odd eye line looking at the middle of the screen and not
the camera.
It was just a way to focus on whoever it was was speaking, was asking,
or answering a question.
And I would say that this kind of felt 50% of the way there.
There were no students physically in the room, certainly,
they were all tiles on the screen.
But the tiles were pretty small but it was certainly
better than just sitting, for instance, at a laptop and a much smaller screen,
interacting with the same sort of discussion based audience.
So we started thinking about how we could bring it a bit more to life
and try to create on-campus, COVID permitting and protocol permitting.
Just something that felt more for the faculty member
like it was indeed a classroom, even if they're the only one in the room.
And so we started experimenting with a few other TVs.
We put three of them, for instance, in a row.
And instead of using the traditional Zoom meeting software, which most of us
are using right now, we downloaded the Zoom room software,
which is typically used in like conference room corporate environments
for multiple TVs on the wall.
And we just laid out the TVs like this sort of in an ellipse
around a few other monitors.
So if I sort of Zoom in on this setup, what
you'll see is not just three screens of students, potentially, as many as 75
at a time given the current restrictions of Zoom rooms,
there's a camera up there at the top middle,
there's a confidence monitor just so I know that I'm in or out of frame,
and then there's a couple of more monitors behind the table
here that has one, the participants window.
So I or a colleague of mine could see any of the students' hands
going up virtually.
And then also a tall monitor with just the chat
window to see any questions or comments coming in along the way.
And I would say that this set up here, especially once we added a green screen
so that we could project our content behind us,
did it really start to feel 80% like being in a class.
Right now I'm literally the only one in this room.
And to be fair, most of us, during the workshop, have had our tiles off.
But once these tiles all come to life and you can actually
move around in this space and look at different cameras
and different screens, I genuinely mean that it felt more like 80% of the way
to being in a classroom with students otherwise being seated there in seats.
I didn't mean to guilt anyone into turning your cameras on.
I see some faces starting to shine, that that's certainly OK.
And if you're curious just to break the fourth wall here,
Patrick would you mind killing our virtual background for a minute?
Sort of depressing that it's indeed just me
now in this room with colleagues of mine listening in on microphones,
but this is just what we have.
Some lights above, some lights below, a green screen behind us,
and granted, some fancy hardware controlling it all.
But it's just a room that we then try ultimately to bring to life.
All right, Patrick, we can go back to virtual reality here.
So this was our default plan so this would
have been early midsummer last year.
Harvard, like many universities, wasn't really sure
what the fall semester was going to be like.
So at least we had a plan in place.
And we started practicing with it endlessly.
We would, not so much with our undergraduates,
who were very much focused on fall or spring semesters,
but some of our online students through edX for instance,
we would just invite them to optional one
off classes or tech talks or office hours, if you will,
just so that we could play with and try out this set up again and again just
to get me comfortable with it and our whole team just familiar
a bit more with the mechanics of it.
But at the same time we realized that maybe there's some silver lining here.
If we fortunately can stay healthy through all of this
and we can access Harvard per its current protocols could
we may be leverage some of the otherwise dormant resources
on campus because pretty much every building now was indeed offline.
And it turns out that there were--
Harvard has a bunch of buildings beyond the traditional classroom buildings.
One of which happens to be a sort of dinner theater down the road.
Those of you who've been to Cambridge, it's called the Oberon theater.
They too couldn't hold any shows or dinner events or the like.
And here's a photo of it, complete with a disco
ball in the middle of the ceiling, and it had a little stage, pictured here.
It's just me and some of my colleagues on it.
And we started to spec this out because it turned out we could maybe,
if we wanted, filmed the course's lectures
and try to bring them to life on an actual stage in an actual theater
with no audience, admittedly.
But even though the pictures don't quite tell that story
it was actually pretty space-constrained.
And at the time, Harvard was prescribing at least 25 feet
of distance between someone like me, if teaching and unmasked in a space,
with all of my colleagues masked with face shields and the like,
would have to be at least 25 feet away.
And so the space could have been used but
wasn't necessarily the best option since it actually
would have been quite confining.
And so just kind of on a whimsy did we ask the same folks who
manage the real estate here in Cambridge, what about that slightly
larger theater down the road?
Otherwise known as the low main stage or American Repertory
Theater, where they're based.
Which is actually this beautiful space across campus that in healthy times
would host plays and shows in the traditional sense.
But that space and, in turn, its team of very artistic lighting experts
and stage experts and audio experts and prop masters
complete with their own prop shop were essentially offline, potentially
for the whole year unless that space were somehow utilized.
And somehow or other we got back a yes.
And we had access to this multiple hundreds seat
theater that normally would be used for these more theatrical shows,
a blank slate of sorts.
If we flip the camera around and look at what
was a sort of black box stage with plenty of lights up and above it.
And so we started to think now in probably July,
August starting to cut it close to September 2020,
how we could bring this stage to life even without an audience in there.
And so one of the first things we did, for instance,
was started trolling through Harvard's archives.
Where they have documents and paintings and everything
from hundreds of years ago.
And we actually found this, a watercolor painting from 1794.
A graduate student by the name of Jonathan Fisher at the time,
happened to be standing, sitting in Harvard Square,
painting some of Harvard's earliest buildings here right there
in Harvard Yard.
And so this was only a painting about yay big,
I believe they did have a digital image of it.
And we decided with the help of the library system
here to bring this thing to life.
And thus was born a 30 foot tapestry, version thereof.
Even here did we already have a chance to weave in some computer science.
This was even though shot at pretty high resolution with a nice glass lens.
It's one thing to take it from this size to 30 feet so we ran it
through some of this machine learning type software that's
now built into Photoshop and other open source tools that would actually
allow us to interpolate among the pixels and actually blow it up to something
that looks nice as well as it did here.
And so thus began a collaboration with this American Repertory Theater.
These amazingly talented artists that would otherwise
be working on amazing shows and plays and performances and the like.
And thanks to not only those talents and also this prop shop in back
did we, as the teaching staff have an opportunity
to rethink how we were presenting CS50's lectures.
And any sort of prop or demonstrations that I might fancifully in the past,
at home in my apartment have wished "Oh that be fun to do."
Not having the resources did those resources suddenly come into play.
And so ultimately, we not only put up this big backdrop.
They kindly helped us set up the sort of traditional red curtains
and black curtains and all of the requisite lights.
We brought in some of our technology, like a big touch
screen display to actually display code and slides on as well as the lectern.
And we tried to bring this space to life.
And indeed thanks to these talented artists
did over the course of the semester, we try to infuse a bit of fun,
even interest to the visuals of the class to help students
feel like something was indeed coming to life here.
So pictured here is the default photo around October
did the artisans decorate it with a little more of a fall motif,
it eventually evolved into something with Halloween in mind,
and then ultimately wintertime did the whole stage evolve.
So just little touches, separate certainly
from the curriculum of the class, just to try to make a little bit different
what it is students were logging in for these multiple hours per week.
And as for my view, if we flip the camera back around,
there were no one in those seats, but there
were some 6 large TV displays on which were at least 25 faces on each.
So this gave us 15, 75, 150 students could actually
be virtual members of the audience.
And, for my sake, actual members of the audience with whom to interact.
To not only have the sort of psychology of those eyes looming down
on me feeling like I do have to rise to those interpersonal expectations,
but it was also possible for us, pictured here
is me interacting with one student to blow the student's face up
onto the screen.
So that I could see them in perfect fidelity, see their name on the screen.
And we had a camera right atop the screen.
So that when a student did ask a question virtually or physically
and I interacted with them, to answer or ask some question of them,
did it actually feel a bit closer to what
it might have been if they were in a similarly large space here on campus.
So here are some of our undergrads over on the right here.
And in fact, if we Zoom out from the 6 screens,
we also have this tradition in Cambridge of inviting members of the public,
in healthier times, to actually come to that theater
on campus to sit in on a computer science lecture
if that is of genuine interest to them.
And we actually did the same here too.
We had a separate Zoom room as part of our OpenCourseWare initiative,
into which we invited anyone on the internet if they wanted to partake
and so those spaces to the left were known
to me to be that demographic of students and learners as well.
So in terms of the logistics, we were very fortunate, certainly,
that we were able to craft the requisite protocols.
And Harvard thankfully had a whole machinery in place to figure out,
at the time, what the data suggested was safest and most healthy.
And what you see here is, for instance, one of our first mock ups of the space.
The little blue dot there over in the middle is me by the lectern.
And there is maybe four or so green dots that represented colleagues of mine.
There were at least these 25 feet away.
Wonderfully, they were willing to be there not just in face mask
but face shields.
All of us were getting tested regularly as well.
But this is why we needed, at the time, at least,
such a large space to do any of this.
And there was also a space backstage that a colleague of mine
was able to then use himself, him too, without his mask on,
in a separate video feed there.
Because what we did want to preserve were
some of those earliest visuals of the students coming up on the stage.
And we couldn't really do that anymore this year.
And so Brian, my colleague, became my proxy of sorts.
He is here as our--
leading the class alongside me albeit in a separate space
and answering some of the rhetorical questions
that I might normally ask of students.
But having access now to this stage and to this amazing team
of talented artists and carpenters and the like,
were we able to reach for all of the various props
that they would otherwise be using in shows.
There's a warehouse down the road where we
were able to go, literally, aisle by aisle looking at past shows' props
to see what could we use to bring the subject to light.
Here, for instance, is the ghost light from the theater.
If unfamiliar, a ghost light is this old school tradition in many theaters
where they leave a single light on at night for the ghosts.
And also so that you don't trip and fall off the edge of the stage
if the theatre is otherwise dark.
And so this became our first binary ball, talking about ones and zeros
by literally plugging and unplugging that particular light bulb.
We also brought to life to the edge of the stage
in a very traditional theatrical way where
we had 64 light bulbs or binary bulbs, if you will.
And it was on this stage that we then introduced students, not just
a single bit.
But maybe a bytes worth at a time, turning the light bulbs on and off
in some pattern to represent integers and later
ASCII characters and the like.
And so it actually became kind of a running gag too, just for fun,
that every lecture every week did we sort of encode
a different English message in ASCII sort of as a little brownie
point exercise to see who could actually decode the pattern of 8 bytes
here along the way.
Besides this, one of my, sort of, pedagogical dreams for years
has always been to somehow introduce students
to the notion of a raise in a language like C and to topics like binary search
or linear search, even, using actual doors so you
can walk through the motions of literally having to open a door
to make clear that a computer can only look at, presumably, one memory
location at a time.
And so whereas the traditional audience, if you just
put a whole bunch of numbers on stage and ask the students to find
a number for you, of course we, with this bird's eye view,
see everything at once but not so with doors.
And so what you see here is a mix of multiple doors from multiple past shows
behind which the prop shop amazingly brought to life
even the numbers, sort of Sesame Street or Muppet style.
So here was me discovering the number 6 behind one of these doors.
And each of the other numbers during our linear search and binary search
examples looked a little something like this.
Not something we could have done in our typical lecture hall,
beautiful as that other theater was.
When there's a class before us a class after us no prop shop
and back and no one except the teaching staff alone.
Now in back my colleague Brian was able to have his own visuals so
that we could sort of interact and he could
play the role of a proxy for students.
And here was us playing around with sorting algorithms.
A whole bunch of numbers, an array at the top,
and just deliberately this metal shelf that we found around backstage so as
to paint a picture of something like merge sort,
requiring a bit of extra storage.
One or more shelves, depending on how you decide to implement it.
So here for instance, is Brian beginning to sort and ultimately
merge those numbers into what ultimately was sorted order.
With him, again, playing the role of what
would have been a student in healthier times.
When we talk about memory and memory management in this language C,
we often of course, talk about things like garbage values
and, amazingly, was that team able to bring garbage values
to life in the form of these little wooden tiles
that they put with some input from us.
Oscar the grouch on.
And this is a close up now of using a Canvas of memory,
where each of the Oscars, or each of those squares
represents a byte of memory.
This depicts us implementing a main function, a function called swap,
and using some of those stack frames of memory
to sort bring that to life for students as well.
We found a few mailboxes and put those both in front stage and back stage
so that Brian and I could talk about pointers and indirection.
This is me opening a variable called p, finding inside of it
in an address 0x123.
Now we cut backstage and there's Brian with a variable that
lives at exactly that address 0x123 voila,
it was Brian finding the number that we had stored at that location.
Here's Brian again, interacting with me with a sort of split screen here.
We're in very distinct spaces, separate from one another,
talking about variables and how you might swap two variables' values.
Of course, if you have two glasses with color liquid
you can't really pour one into the other and do a switcheroo.
But if you rip out a temporary variable, as Brian did here,
could we now bring to life this idea of swapping two variables properly?
Much like a student at that point in the semester
might have needed a third variable to actually exchange
two values when talking about swap and stack frames and the like.
Brought in some old buckets.
Buckets.
And we labeled them with suits of a deck like spades and diamonds
and hearts and clubs.
And we introduced students to hashing.
So this is me holding up an oversized playing card,
just talking about how we might bucketize each of those cards
based on their suit, and then do one of our earlier sorting algorithms
to actually get them from 1 through 13 or Ace through King.
Slightly in the back there too, albeit we didn't need a whole prop shop for,
this is us talking about stacks that particular week as well.
And why I seem to only ever wear black.
Well it turns out, according to the story told
in class, that's because I store all of my sweaters in a stack
and the most colorful ones happen to be at the bottom
but of course all the black ones are pictured there at top.
And then this one was perhaps one of the biggest ones that we'd long fancied.
Bringing to life linked lists in C, where one node somehow
points to another.
And so the prop shop in back wonderfully built us some wooden boxes.
This representing a pointer called list that would eventually point
to some malloced or allocated nodes.
This is me realizing, sort of too late how big a three foot wooden node
actually is and how much it weighs.
But this is me mallocing a node containing space for both a number,
like one two three, or next a pointer to the next node.
This is me grabbing the extension cord that we used from Home Depot,
with a big orange arrow, so as to point that variable at the head of
or the beginning of that list.
This is me regretting mallocing a second node on stage.
This is me realizing, "oh my God.
Sometimes our memory is not contiguous and the next node
is all the way over there."
Fortunately, we can just bring a really long extension cord
to bear on that problem as well in order to give ourselves
a linked list there too.
And then, perhaps most appropriate, given
that my former professor, my former advisor, my former mentor
is here today, one of the things I took away from an operating systems
class some 20 years ago was a discussion of database logs
and how you can handle issues of concurrency and potentially raise
conditions.
And the way Margot always described it was
imagine that you and maybe a roommate each lived together
and you have a refrigerator.
And one of you opens the fridge, realizes you're out of milk.
And so you leave the dorm room and go off into the Harvard Square
to get a new jug of milk.
Meanwhile your other roommate comes in, realizes "Oh we're out of milk"
and they do the same.
Of course dot, dot, dot, you end up with two jugs of milk,
which is probably twice as much milk as you want.
But not if you lock the refrigerator as we did here.
So wonderfully a previous show had needed an old school refrigerator
that was still lying around.
We brought in a padlock and a chain and we acted this whole thing out.
And then, lastly, toward the very end of the semester
did we talk about things like callback functions, using some old school
phones that happened to be in the prop shop as well.
We talked about sessions and state management in the context of HTTP
with carts or shopping carts and cookies, if you will.
Mostly just an excuse to have a little something for ourselves after.
And this was all thanks truly to this, this truly silver lining this past year
of having, not only access to, but the bandwidth among all of these talented
folks on campus, only a few of whom are pictured
here backstage who helped us as a class bring so many of these topics to life.
And indeed, if I just flip through some of the ending credits
that we put together it really was this whole team
for which there was no precedent even for an online class like ours,
working with each other and this academic and artistic way in parallel.
So in closing I thought I'd offer just a few takeaways, some of which
are a little CS50 specific so I'll wave my hands at some of the visuals,
but certainly they're all in the slides here.
We ask students after each week or at the end of the course what
they thought of each of these visuals.
We asked them questions about to what extent they helped
or hurt their understanding of topics.
Here's sort of a ranked listing of all of those demonstrations
that I just alluded to there.
Margot, I can officially say, 20 years later,
yours remains the number 1 favorite demonstration of students.
The refrigerator and milk to explain race conditions.
Blue means very helpful, that was the best received
demonstration of all of them.
And this is just the kind of feedback that
will now use this coming fall, even with less theatricality
to inform exactly how we're bringing some of these things to life.
And it's not that we didn't ever do these kinds of demonstrations.
It's not that we didn't talk about refrigerators and locks in the past,
but we were able to bring them to life on a scale that was not only so much
fun but so much more visually engaging.
We hoped for students otherwise plopped in their seat
all day long that had traditionally been possible.
And you might expect the obvious kinds of feedback
they were fun from some students, they helped students understand,
some students cautioned they were unnecessary,
suffice it to say these theatrics took more time than you or I might normally
spend or choose to spend on some topic.
But the visuals, and then 600 plus other comments
were sort of themed around this.
And so my own takeaways from this one year in particular
was truly this first: practice, practice, practice,
not a luxury most of us had at the time.
But the fact that I and Margot and others
had already been teaching for Exec.
Ed.
and had been using Zoom and other forms was so enabling, certainly.
And that too was a privilege to have had going into this
when so much else was going on too.
As a sort of small tip on Zoom, just standing up, do I find at least,
this helps me feel like and bring to bear sort of the energy
that I might have had in a more traditional class.
The interfaces that we're all using now, including this tool here,
they're clunky.
And some of our own frustrations early on with stupid
Windows disappearing and having to click on buttons over here and the like.
The tools aren't really optimized for us teachers, I dare say yet,
but thanks to APIs and the like is that changing.
The chat window, funny enough, was game changing.
It's simplistic as it is.
The fact that it was always right there next to the video feed
was an exponential increase for us in the amount of Q&A and student
asynchronous or really synchronous participation electronically
even though for many years have we tried slack and other tools
during live lecture.
We tried bringing to life virtual meals to bring back
some of that community and intimacy.
For us, that didn't work.
Students sort of phased out of those pretty quickly.
And much like, I think, all of us have experienced
just enough cameras were on.
And so it was actually kind of a struggle
to make sure we were balancing the Q&A and audience
participation among as many students as we could
who were comfortable participating.
And then more playfully, don't make the same mistake I did here,
building linked lists out of wood.
And the last remark I'd make is again, this evolution of what
we've done for the past several years, we've
had this longstanding collaboration too with Yale University
where we have a few hundred students in New Haven taking this same class, CS50.
Where they have their own sections and office hours of the like.
But all of the content is created and streamed from one place.
And I think that too has really gotten us here
and our colleagues in New Haven thinking about how
we can all lean on each other all the more, especially in healthy times.
So that if we are investing this much time, this much talent,
this much resources in classes, perhaps we
can sort of amortize that cost over multiple universities,
multiple demographics, as opposed to reinventing
the wheel each and every term as we too here long have.